package org.subatu.orm.core;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

// @Service
public interface BaseMapper<T> extends Mapper<T> {
    // 添加
    int save(T entity);

    // 删除
    int deleteById(Serializable id);

    // 可以删除 组合主键
    int deleteById(T entity);

    int deleteBatchIds(Collection<? extends Serializable> idList);

    int deleteRealById(Serializable id);

    // 可以删除 组合主键
    int deleteRealById(T entity);

    int deleteRealBatchIds(Collection<? extends Serializable> idList);

    // 修改
    int updateById(T entity);

    // 查询
    T getById(Serializable id);

    List<T> selectBatchIds(Collection<? extends Serializable> idList);

    List<Map<String, Object>> selectMaps();

    List<?> selectList(String sql);

    // 如果有分页, 就内置分页的查
    List<?> selectList(String sql, List<?> params);

    List<?> selectList(String sql, List<?> params, Class<?> resultType);

}
